package com.glela.platform.mapper;

import java.util.Date;
import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.glela.common.BaseSqlMapper;
import com.glela.platform.model.UserJournal;

public interface UserJournalMapper extends BaseSqlMapper<UserJournal> {

	int batchInsert(List<UserJournal> list);

	/**
	 * 添加流水账
	 * 
	 * @return
	 */
	public int insertUserJournal(UserJournal userJournal);
	/**添加余额流水*/
	public int insertSelective(UserJournal userJournal);

	/**
	 * 根据用户id查询用户流水账
	 * 
	 * @param userId
	 * @param page
	 * @param pageSize
	 * @return
	 */
	public List<UserJournal> getUserJournalList(@Param("userId") long userId, @Param("pagelimit") int pagelimit,
			@Param("pageSize") int pageSize);

	/**
	 * 根据id查询用户流水账总数
	 * 
	 * @param userId
	 * @return
	 */
	public int countUserJournal(@Param("userId") long userId);

	/**
	 * 根据用户ID获取某个用户的妆币总收入
	 * 
	 * @param userId
	 * @return
	 */
	public int getUserJournalTotalIncome(@Param("userId") long userId);
	
	/**
	 * 根据用户ID获取某个用户的妆币总支出
	 * 
	 * @param userId
	 * @return
	 */
	public int getUserJournalTotalSpending(@Param("userId") long userId);

	
	public int selecttUserJournalNum(@Param("userId") long userId);

	/**
	 * 时间段内的流水记录
	 * 
	 * @param userId
	 * @param startTime
	 * @param endTime
	 * @return
	 */
	List<UserJournal> getUserJournalListByTime(@Param("userId") long userId, @Param("startTime") String startTime,
			@Param("endTime") String endTime, @Param("pagelimit") int pagelimit,
			@Param("pageSize") int pageSize);

	/**
	 * 统计时间段内的流水记录
	 * 
	 * @param userId
	 * @param startTime
	 * @param endTime
	 * @return
	 */
	int countUserJournalByTime(@Param("userId") long userId, @Param("startTime") String startTime,
			@Param("endTime") String endTime);
	
	public List<UserJournal> getMyBalanceListByPage(@Param("userId") Long userId,@Param("beginDate") Date beginDate,
			@Param("endDate") Date endDate,@Param("pageLimit") int pageLimit,@Param("pageSize") int pageSize);

	/**
	 * 查询用户流水账
	 * 
	 * @param SourceID
	 * @param BusinessType
	 * @return
	 */
	public UserJournal getUserJournalBySourceIDandBusinessType(@Param("SourceID") Long SourceID, @Param("BusinessType") int BusinessType);

	public List<UserJournal> getUserJournalBySourceIDBusinessType(@Param("SourceID") Long SourceID, @Param("BusinessType") int BusinessType);
	/**
	 * 查询用户流水
	 * 
	 * @param SourceID
	 * @param BusinessType
	 * @return
	 */

	public List<UserJournal> selectJournalByCommisionId(int intValue);
	
	/**
	 * 检查近30天的在途积分事务处理行数
	 * @param after30daysTime 
	 */
	int checkOnWayAmountNear30Days(@Param("userId") Long userId, @Param("after30daysTime") String after30daysTime);
}
